//
//  HeziTrigger.h
//  ActivityBox
//
//  Created by ljcoder on 17/2/13.
//  Copyright © 2017年 sunnsoft. All rights reserved.
//

#import <UIKit/UIKit.h>
#import "HeziShareModel.h"
#import "HeziSDKWebView.h"
///----------------------------------------------------
/// @name 触发活动代理
///----------------------------------------------------
@class HeziTrigger;

@protocol HeziTriggerActivePageDelegate <NSObject>

@optional

/**
 决定要不要打开活动
 @param url 活动链接
 */
- (BOOL)heziTriggerWillOpenActivePage:(HeziTrigger *)heziSDK activityURL:(NSString *)url;


/**
 当活动页加载到屏幕上会触发该回调
 */
- (void)heziTriggerDidOpenActivePage:(HeziTrigger *)heziSDK;

/**
 v2.8.1 新增代理
 当活动页加载到屏幕上会触发该回调
 @param activePage 活动页(还未加载链接)
 */
- (void)heziTriggerDidOpenActivePage:(HeziTrigger *)heziSDK activityPage:(HeziSDKWebView *)activePage;

- (void)heziTriggerDidCloseActivePage:(HeziTrigger *)heziSDK;


/**
 v2.8.1 新增代理
 当活动页将要关闭前会调用
 @param activePage 活动页
 */
- (void)heziTriggerDidCloseActivePage:(HeziTrigger *)heziSDK activityPage:(HeziSDKWebView *)activePage;

- (void)heziTirgger:(HeziTrigger *)trigger triggerError:(NSError *)error;
//增加触发成功的回调

/**
 - (void)heziTriggerSuccess:(HeziTrigger *)trigger 的替代方法
 当触发请求服务端成功后,会回调该函数.(不管触发成功与否,只要是请求成功后都会触发该结果)
 用户可以使用triggerInfo判断是否触发成功
 @param triggerInfo 服务端返回的原始数据.
 */
- (void)heziTriggerSuccess:(HeziTrigger *)trigger triggerInformation:(id)triggerInfo;
- (void)heziTrigger:(HeziTrigger *)heziSDK share:(HeziShareModel *)shareContent activePage:(UIView *)activePage;

@end


///----------------------------------------------------
/// @name 触发活动
///----------------------------------------------------
@interface HeziTrigger : UIView

// 是否自动变为半透明,默认NO
@property (assign, nonatomic) BOOL shouldTranslucent;

// 是否自动靠边，默认NO
@property (assign, nonatomic) BOOL shouldBeside;

// 是否隐藏半个图标, 默认NO
@property (assign, nonatomic) BOOL shouldHidden;

//触发后,展示活动的页面;
@property (strong, nonatomic , readonly) HeziSDKWebView *webView;

/**
 设置触发埋点

 @param event 触发的事件，可使用预设的事件，也可已定义
 @param info 用户信息，收集当前用户信息，供核对后台指定触发条件使用。
 比如只有广州地区，女性用户才能触发本次活动，我们会根据此参数来确定当前用户是否符合后台指定要求，决定是否触发活动
 @param view 浮窗图标的super view
 @param rootController rootController决定活动页是从哪个页面跳转的，一般为self即可
 @param delegate 触发活动代理
 @return 当前HeziTrigger对象
 */
+ (instancetype)trigger:(NSString *)event
               userInfo:(NSDictionary *)info
         showIconInView:(UIView *)view
         rootController:(UIViewController *)rootController
               delegate:(id<HeziTriggerActivePageDelegate>)delegate;


/**
 设置触发埋点
 
 @param event 触发的事件，可使用预设的事件，也可已定义
 @param info 用户信息，收集当前用户信息，供核对后台指定触发条件使用。
 比如只有广州地区，女性用户才能触发本次活动，我们会根据此参数来确定当前用户是否符合后台指定要求，决定是否触发活动
 @param view 浮窗图标的super view
 @param rootController rootController决定活动页是从哪个页面跳转的，一般为self即可
 @param edgeInsets 设置图标的上下左右的偏移距离
 @param delegate 触发活动代理
 @return 当前HeziTrigger对象
 */
+ (instancetype)trigger:(NSString *)event
               userInfo:(NSDictionary *)info
         showIconInView:(UIView *)view
         rootController:(UIViewController *)rootController
           uiEdgeInsets:(UIEdgeInsets)edgeInsets
               delegate:(id<HeziTriggerActivePageDelegate>)delegate;



+ (instancetype)trigger:(NSString *)event
               userInfo:(NSDictionary *)info
         showIconInView:(UIView *)view
         rootController:(UIViewController *)rootController
               delegate:(id<HeziTriggerActivePageDelegate>)delegate
             shareBlock:(void (^)(HeziShareModel *))shareCallBack ;

+ (instancetype)trigger:(NSString *)event
               userInfo:(NSDictionary *)info
         showIconInView:(UIView *)view
         rootController:(UIViewController *)rootController
           uiEdgeInsets:(UIEdgeInsets)edgeInsets
               delegate:(id<HeziTriggerActivePageDelegate>)delegate
             shareBlock:(void (^)(HeziShareModel *))shareCallBack;



// ====================小图图标动效设置===========================


/**
 移除浮窗
 */
- (void)dismiss;

- (void)setHzDelegate:(id<HeziTriggerActivePageDelegate>)delegate;

@end




